require("./scripts/ModBus");
if(CJSON == nil)then
	CJSON = require("cjson");
end
if(lfs == nil)then
	lfs = require "lfs";
end

--[[
	流程信息的赋值
--]]
function errFlowSetFunc(code,msg)
	errFlowMsg = msg;
	errCode = code;
end

--[[
	plc对象初始化
--]]
function initPlc(plcSettings)
	mServer = ModBusClient("MODBUS",plcSettings);
	isHeartBeatEven=true --心跳是否偶数
end


--PLC开始触发函数
function flowTrigger(timewait)
	setFlowLogMsgInit(this);

	local ret;
--	print("mServer.QRCODEREG[\"Addr\"]=",mServer.QRCODEREG["Addr"])
--	print("mServer.QRCODEREG[\"Num\"]=",mServer.QRCODEREG["Num"])
	ret,mServer.QR_CODE=mServer.blockReadNonEmptyStr(this,timewait,mServer.QRCODEREG["Addr"],mServer.QRCODEREG["Num"]);
	print("ret=",ret,"mServer.QR_CODE=",mServer.QR_CODE)
	--等待二维码信号就位
	if(ret == false) then
--		errFlowSetFunc(-2,"二维码获取超时");
--		getFlowTime();
		return false;
	end

--	errFlowSetFunc(1,"二维码获取:" .. mServer.QR_CODE);
--	getFlowTime();
	return true;
	
end

--心跳包函数
function heartBeat()

	local HeartBeatEndTime = os.clock();
	local heartBeatValue;

	--这里注意,os.clock的单位是s.
	if(isHeartBeatEven == true) then
		isHeartBeatEven=false;
		heartBeatValue=0x01;
	else
		isHeartBeatEven=true;
		heartBeatValue=0x00;
	end
	if(mServer.SENDERROR ==  mServer.setByteBus(this,200,mServer.HEARTBEAT["Addr"],mServer.HEARTBEAT["Num"],heartBeatValue))then
		return false;
	else
		mServer.HeartBeatStartTime = os.clock();--重置初试时间.
	end
--		mServer.sendByteStringBusEx(this,3000,10150,"");
	return true;

end

--清空二维码寄存器
function clearQrcodeRegister(timewait)
	return mServer.setByteBusEx(this,timewait,mServer.QRCODEREG["Addr"],mServer.QRCODEREG["Num"]);
end

--写结果寄存器
function writeResultRegister(timewait,regAddr,data)
	return mServer.sendByteStringBusEx(this,timewait,regAddr,data);
end